package net.bwie.jtp.app.udf;

import ch.hsr.geohash.GeoHash;
import org.apache.hadoop.hive.ql.exec.UDF;

public class ConvertGeoHash extends UDF {

    public String evaluate(double latitude, double longitude, int precision){

        //处理空值
        if(latitude == 0.0 || longitude == 0.0){
            return null;
        }

        try {
            // 1创建GeoHash对象，指定经纬度和精度
            GeoHash geoHash = GeoHash.withCharacterPrecision(latitude, longitude, precision);
            // 2将GeoHash对象转换为Base32编码的字符串
            return geoHash.toBase32();
        }catch(Exception e){
            System.out.println('参数有误，请重新输入');
            return null;
        }

    }

    public static void main(String[] args) {
        System.out.println(
                new ConvertGeoHash().evaluate(35.46847397820407,119.36278007513695,6)
        );
    }

}

